Amazon Q DeveloperのVMwareワークロード変換機能を利用してEC2の移行ウェーブ作成とオンプレミスネットワーク移行を検証してみた

Amazon Q DeveloperのVMwareワークロード変換機能を利用してEC2の移行ウェーブ作成とオンプレミスネットワーク移行を検証してみた

Amazon Q Developer: Transform for VMware Workloadsを使えば、ネットワーク周りは勿論のこと、Migration HubやMGNの面倒な設定を一部肩代わりしてくれる!

こんにちは、AWS事業本部 コンサルティング部の荒平(@eiraces)です。
Amazon Q Developer transform for VMwareが、2024年のre:Inventにて発表されました。
非常に面白い機能なので、ご紹介したいと思います。

発表時の記事はこちら↓

https://dev.classmethod.jp/articles/reinvent-2024-vmware-with-amazon-q-dev/

大筋の手順は以下のドキュメントにまとまっていますが、少し分かりにくいポイントもあるので、解説しながら進めます。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/transform-app-vmware.html

前提条件

この機能を利用するには、数点の前提条件があります。

※ Amazon Q Developerの対応状況により、利用リージョンは変わる可能性があります。

Amazon Q DeveloperとIAM Identity Centerのリージョンは同一である必要があるようです。私は東京リージョンにIdCを作成していましたが、エラーが出て進めなかったので作り直しました。

事前準備

Amazon QとIAM Identity Centerの接続が必要です。
Connect to IAM Identity Centerのボタンをクリックすると、IAM Identity Centerが接続された状態になります。

Getting Startedの画面右下にAmazon Q Developer Proのサブスクライブボタンがあるので、これをクリックします。

image-20250106160739603

Assign users and groupsでは、Amazon Q DeveloperのPro Tierを付与したいユーザーを検索してアサインします。

image-20250106160944061

image-20250106161034085

Amazon Q Developerがユーザーに割り当てられると、QDefaultProfileのアプリケーション画面から、IAM Identity Center側でもユーザーとグループを確認することができます。

image-20250106161450793

Amazon Q Developerの設定画面から、Amazon Q Developer: Transform settingsを有効にします。

image-20250106162545797

image-20250106162638836

有効になると、アプリケーションURLが発行されるのでこれにアクセスします。

image-20250106162711759

AWS Appsのログイン画面が出てくるので、IAM Identity Centerに登録したユーザーでログインします。

image-20250108152316266

Amazon Q Developer: Transformの画面になりました。

image-20250108152435008

Amazon Q Developer Transform for VMware Workloadを試してみる

早速ですが、Ask Q to create a jobからどのTransformationジョブを作成するか問われます。
ここでは 2をチャットしてみます。

image-20250108152515707

ジョブのタイプ、目的、ジョブ名をサジェストしてくれるので、yesとタイプし次に進むと、「Create job」というボタンが出現しました。これをクリックしてみます。

image-20250108152735303

ジョブが作成されました!ダッシュボードはこの時点では何も表示されないようです。
画像では分かりにくいのですが、Connect AWS account for on-premises discovery dataのアイコンがぴょんぴょん跳ねています。

image-20250108153838463

Create or select connectorsのタスクをクリックすると、利用するAWSアカウントの入力を求められるので、アカウントIDを入力し、検証リンクを受け取ります。

image-20250108154304422

検証リンクを開き、新規Connectorを許可するために Approve をクリックします。

image-20250114200217987

image-20250114200314409

Amazon Q Developerの画面でApprovedのステータスに変化するので、「Send to Q」をクリックします。

image-20250114200431740

この段階でDiscovery Serviceなどにオンプレミスデータが溜まっていればそれらを利用できますが、私の検証用アカウントにはオンプレミスデータがないため、Migration Hubに手動で仮想マシンデータをインポートして「仮想マシンがあるテイ」で進めます。
RVToolsにてオンプレミスデータを収集できる場合は Upload Zip fileからアップロードしてください。

https://qiita.com/mtoyoda/items/b85a57267a4a37a34ee1

image-20250114200752033

なお、仮想マシンデータのMigration Hubインポートについては、サンプルファイルを改変して、以下のようにしました。

ExternalId,SMBiosId,IPAddress,MACAddress,HostName,VMware.MoRefId,VMware.VCenterId,CPU.NumberOfProcessors,CPU.NumberOfCores,CPU.NumberOfLogicalCores,OS.Name,OS.Version,VMware.VMName,RAM.TotalSizeInMB,RAM.UsedSizeInMB.Avg,RAM.UsedSizeInMB.Max,CPU.UsagePct.Avg,CPU.UsagePct.Max,DiskReadsPerSecondInKB.Avg,DiskWritesPerSecondInKB.Avg,DiskReadsPerSecondInKB.Max,DiskWritesPerSecondInKB.Max,DiskReadOpsPerSecond.Avg,DiskWriteOpsPerSecond.Avg,DiskReadOpsPerSecond.Max,DiskWriteOpsPerSecond.Max,NetworkReadsPerSecondInKB.Avg,NetworkWritesPerSecondInKB.Avg,NetworkReadsPerSecondInKB.Max,NetworkWritesPerSecondInKB.Max,Applications,Tags
APP01-ID,4c4c4544-0047-4310-8043-b6c04f504633,"192.168.1.10",00:50:56:9A:00:01,app01.local,vm-01,vc-prod-01,2,4,4,Microsoft Windows Server 2019,10.0.17763,APP01,8192,4096,6144,45.5,82.3,150.45,48.32,980.65,142.87,2.45,685.32,10.56,890.43,18.65,22.43,98.76,180.54,"IIS, .NET Core","Environment:Production, Service:Web, Tier:Frontend"
DB01-ID,4c4c4544-0047-4310-8043-b6c04f504634,"192.168.2.20",00:50:56:9A:00:02,db01.local,vm-02,vc-prod-01,4,8,8,Microsoft Windows Server 2019,10.0.17763,DB01,16384,12288,14336,65.8,95.4,320.87,180.54,1450.76,485.32,4.87,920.54,15.87,1240.65,25.43,32.76,145.87,280.43,"SQL Server 2019, SSMS","Environment:Production, Service:Database, Tier:Backend"
APP02-ID,4c4c4544-0047-4310-8043-b6c04f504635,"192.168.1.11",00:50:56:9A:00:03,app02.local,vm-03,vc-prod-01,2,4,4,Microsoft Windows Server 2019,10.0.17763,APP02,8192,3584,5120,42.3,78.5,145.32,45.76,920.43,138.54,2.32,645.87,9.87,850.32,17.54,21.32,95.43,175.87,"IIS, .NET Core","Environment:Production, Service:Web, Tier:Frontend"
MONITOR01-ID,4c4c4544-0047-4310-8043-b6c04f504636,"192.168.3.30",00:50:56:9A:00:04,monitor01.local,vm-04,vc-prod-01,2,4,4,Microsoft Windows Server 2019,10.0.17763,MONITOR01,8192,2048,4096,25.4,45.6,85.43,32.54,450.87,98.76,1.87,320.54,7.65,520.43,12.43,15.87,75.43,120.87,"Nagios, Grafana","Environment:Production, Service:Monitoring, Tier:Management"
DB02-ID,4c4c4544-0047-4310-8043-b6c04f504637,"192.168.2.21",00:50:56:9A:00:05,db02.local,vm-05,vc-prod-01,4,8,8,Microsoft Windows Server 2019,10.0.17763,DB02,16384,11264,13312,62.4,92.1,310.54,175.87,1380.43,465.87,4.54,890.32,14.87,1180.54,24.32,31.54,140.65,270.87,"SQL Server 2019, SSMS","Environment:Production, Service:Database, Tier:Backend"

サンプルファイルについては、Application Discovery Serviceの公式ドキュメントに転がっています。

https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-import.html?icmpid=docs_console_unmapped

Amazon Q Developerからインポートを失敗したものを削除する術がないと思っていたのですが、Migration Hubから削除することができました。(以下の画像の上3つ)

image-20250114211825461

移行対象の仮想マシン読み込みが終わると、ウェーブのレビューが必要になります。
ウェーブとは、仮想マシン移行におけるグルーピングのことで、同じシステムに属する仮想マシン数台をまとめて移行する場合に優先度をつけることが可能です。

Amazon Q Developerが仮想マシンデータを組み込んだテンプレートを提示してくれるので、これをダウンロードします。

image-20250114212335272

ダウンロードしたファイルの中身(CSV)です。
ネットワーク接続に関するコメントがありますがこれは一旦無視します。

ExternalId,ServerId,HostName,VMware.MoRefId,VMware.VCenterId,VMware.Vmname,Applications,ApplicationWave,Remarks
DB02-ID,d-server-02zlhz8vwr0wi7,db02.local,vm-05,vc-prod-01,DB02,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
APP01-ID,d-server-01zaz4gapx690b,app01.local,vm-01,vc-prod-01,APP01,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
DB01-ID,d-server-018fwuvfv6mese,db01.local,vm-02,vc-prod-01,DB01,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
MONITOR01-ID,d-server-032h8fx8p2iwaa,monitor01.local,vm-04,vc-prod-01,MONITOR01,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
APP02-ID,d-server-01qgwxs1fe1xaz,app02.local,vm-03,vc-prod-01,APP02,,,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."

ApplicationsApplicationWaveに追記してアップロードしてみます。

ExternalId,ServerId,HostName,VMware.MoRefId,VMware.VCenterId,VMware.Vmname,Applications,ApplicationWave,Remarks
DB02-ID,d-server-02zlhz8vwr0wi7,db02.local,vm-05,vc-prod-01,DB02,apps01,wave-1,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
APP01-ID,d-server-01zaz4gapx690b,app01.local,vm-01,vc-prod-01,APP01,apps02,wave-1,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
DB01-ID,d-server-018fwuvfv6mese,db01.local,vm-02,vc-prod-01,DB01,apps03,wave-1,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
MONITOR01-ID,d-server-032h8fx8p2iwaa,monitor01.local,vm-04,vc-prod-01,MONITOR01,apps04,wave-2,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."
APP02-ID,d-server-01qgwxs1fe1xaz,app02.local,vm-03,vc-prod-01,APP02,apps05,wave-2,"No network connections were detected for this server. To resolve this issue, install or fix the collection capability."

アップロードすると検証が走ります。特に問題がなければ、Success!と表示されます。

image-20250114213417218

テキストだと少し見づらいので、CSVの画像です。

image-20250114213656138

上記CSVに記載したアプリケーション名・Wave IDがMigration Hub側にも反映されていることが分かります。

image-20250114213806176

続いて、移行先のAWSアカウントに接続します。
Create or select connectorsから、AWS account IDを入力のうえ「Create connector」をクリックします。

image-20250114214019243

例のごとく検証リンクが発行されるので、これをクリックして「Approve」をします。接続できれば「Send to Q」を実行。

image-20250114214152146

RVToolsからエクスポートしたCSVデータをzipにして、アップロードを行います。

image-20250115022134369

インポートしたデータはMigration Hubのデータコレクタ画面で見れるほか、インポート時のエラーも確認できます。(Amazon Q Developerの画面では詳しく教えてくれませんでした…)

image-20250115022320190

いよいよ移行も大詰めです。オンプレミスデータに合わせたVPCネットワークをAmazon Qが自動で構築してくれます。「Use Q to deploy the VPCs」をクリックし、「Send to Q」をします。

なお、この段階で各種クォータ(VPCやElastic IPの数上限)に引っかからないかは事前確認が必要です。

Amazon Q が裏でAWS CloudFormation テンプレートとAWS CDK テンプレートをデプロイします。

image-20250115022909896

EIPの上限に引っかかると、画像のようにしっかり教えてくれます。

image-20250115023604679

VPCネットワークが作成されました!分かりやすくタグも振られています。

image-20250115023848267

オンプレミスネットワークの形に合わせ、以下のものが自動生成されます。(ドキュメント参照

  • VPC
  • サブネット
  • セキュリティグループ
  • ネットワークアクセスコントロールリスト (NACL)
  • NAT ゲートウェイ
  • トランジットゲートウェイ
  • インターネットゲートウェイ
  • Elastic IP
  • ルート
  • ルートテーブル

ちなみに自分でカスタマイズをしたい場合は、CloudFormationやCDKのテンプレートがダウンロードできます。

AWS Application Migration Service (AWS MGN)の初期設定を行います。サービスのオプトインを行い、「Send to Q」をクリックします。
筆者環境では既にMGNのオプトインをしていたため、もしかすると表示が変わるかもしれません。

image-20250115024341978

最後に、ウェーブごとにサーバ移行計画を作成します。
選択式の項目から、サイジングやテナンシー、インスタンスタイプを指示します。
サイジングに関して、最大の使用率を取るか、平均を取るかなどの指示が可能です。

image-20250115024750917

Amazon Q Developerが作成したMigration planはダウンロード可能です。

image-20250115025223413

今回の検証では、以下のようなCSVが吐き出されました。

mgn:account-id,mgn:region,mgn:app:name,mgn:app:description,mgn:wave:name,mgn:server:user-provided-id,mgn:server:tag:vmuuid,mgn:server:fqdn-for-action-framework,mgn:server:platform,mgn:launch:instance-type,mgn:launch:placement:tenancy,launch:instance-type:recommendation-remarks,mgn:server:tag:vmmoref,mgn:server:tag:vcenteruuid,mgn:server:tag:vcentername,mgn:server:tag:vmname,mgn:server:tag:hostname,mgn:launch:nic:0:private-ip:0,mgn:server:tag:QTransformJobId-d4bc774a-5364-41d6-9c38-6273d4aa02fc,mgn:server:tag:Tier,mgn:server:tag:Environment,mgn:server:tag:Service
"",us-east-1,apps03,,wave-1,db01.local__d-server-018fwuvfv6mese,,192.168.2.20,Windows,c7i-flex.2xlarge,default,,vm-02,vc-prod-01,,DB01,db01.local,192.168.2.20,Imported,Backend,Production,Database
"",us-east-1,apps02,,wave-1,app01.local__d-server-01zaz4gapx690b,,192.168.1.10,Windows,t3a.xlarge,default,,vm-01,vc-prod-01,,APP01,app01.local,192.168.1.10,Imported,Frontend,Production,Web
"",us-east-1,apps01,,wave-1,db02.local__d-server-02zlhz8vwr0wi7,,192.168.2.21,Windows,c7i-flex.2xlarge,default,,vm-05,vc-prod-01,,DB02,db02.local,192.168.2.21,Imported,Backend,Production,Database

c7i-flex.2xlarge は最近のインスタンスですが、積極的に勧めてくれるのは嬉しいですね。

この段階でスペックの変更をする場合は、手動で訂正してアップロードします。

最後のSend to Qを終えると、サーバーの移行を促す画面になります。それぞれのサーバーに対してReplication Agentを入れるか、MGN Connectorを利用します。

image-20250115025801545

MGN側でもウェーブが設定され、それぞれの仮想マシンの移行状況が把握できるようになっていました。

image-20250115030000460

おわりに

Migration HubやMGNにてウェーブ管理をするのはなかなか面倒なのですが、初期設定からAmazon Q Developerが肩代わりしてくれるのでユーザー体験は良さそうです。

目玉機能が Network Migration ですが、AWS用のネットワーク設計の手間が省ける、といった点で嬉しい方も多いのではないかと思います。
Quotaは十中八九引っかかる気がするので、Amazon Qが自動で引き上げてくれたら嬉しいのに…と思いつつ、便利であることには変わりないので、是非使ってみてください!

このエントリが誰かの助けになれば幸いです。
それでは、AWS事業本部 コンサルティング部の荒平がお送りしました!

参考

https://dev.classmethod.jp/articles/q-developer-transformation-mainframe/

https://github.com/awslabs/import-export-for-nsx

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.